package com.iplant.wms.service;

import com.iplant.base.po.Pagination;
import com.iplant.base.po.ServiceResult;
import com.iplant.basic.service.po.bms.BMSEmployee;
import com.iplant.wms.service.po.brm.*;

import java.util.List;

public interface BRMService {


    //补货规则
    ServiceResult<Integer> BRM_UpdateReplenishRule(BMSEmployee wLoginUser, BRMReplenishRule wReplenishRule);

    ServiceResult<Integer> BRM_DeleteReplenishRule(BMSEmployee wLoginUser, BRMReplenishRule wReplenishRule);

    ServiceResult<Integer> BRM_ActiveReplenishRule(
            BMSEmployee wLoginUser, BRMReplenishRule wReplenishRule, int wActive);

    ServiceResult<BRMReplenishRule> BRM_QueryReplenishRule(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<List<BRMReplenishRule>> BRM_QueryReplenishRuleList(
            BMSEmployee wLoginUser, String wName, int wStoreID,int wShelvesRuleID, int wActive, Pagination wPagination);

    //上架规则
    ServiceResult<Integer> BRM_UpdateShelvesRule(BMSEmployee wLoginUser, BRMShelvesRule wShelvesRule);

    ServiceResult<Integer> BRM_DeleteShelvesRule(BMSEmployee wLoginUser, BRMShelvesRule wShelvesRule);

    ServiceResult<Integer> BRM_ActiveShelvesRule(BMSEmployee wLoginUser, BRMShelvesRule wShelvesRule, int wActive);

    ServiceResult<BRMShelvesRule> BRM_QueryShelvesRule(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<List<BRMShelvesRule>> BRM_QueryShelvesRuleList(
            BMSEmployee wLoginUser, String wName, int wStoreID, int wActive, Pagination wPagination);

    //上架属性
    ServiceResult<Integer> BRM_UpdateShelvesProp(BMSEmployee wLoginUser, BRMShelvesProp wShelvesProp);


    ServiceResult<Integer> BRM_ActiveShelvesProp(BMSEmployee wLoginUser, BRMShelvesProp wShelvesProp, int wActive);

    ServiceResult<List<BRMShelvesProp>> BRM_QueryShelvesPropList(
            BMSEmployee wLoginUser, int wRuleID, String wName, String wCode, int wActive,
            Pagination wPagination);

    ServiceResult<Integer> BRM_UpdateShelvesRange(BMSEmployee wLoginUser, BRMShelvesRange wShelvesRange);

    ServiceResult<Integer> BRM_DeleteShelvesRange(BMSEmployee wLoginUser, BRMShelvesRange wShelvesRange);

    ServiceResult<List<BRMShelvesRange>> BRM_QueryShelvesRangeList(
            BMSEmployee wLoginUser, int wStoreID, List<Integer> wCustomerIDList, int wMaterialGroupID,
            String wMaterialGroupFullName, int wMaterialID, String wMaterialCode, String wMaterialLike,
            Pagination wPagination);


    //抽样规则
    ServiceResult<Integer> BRM_UpdateSampleRule(BMSEmployee wLoginUser, BRMSampleRule wSampleRule);

    ServiceResult<Integer> BRM_DeleteSampleRule(BMSEmployee wLoginUser, BRMSampleRule wSampleRule);

    ServiceResult<Integer> BRM_ActiveSampleRule(BMSEmployee wLoginUser, BRMSampleRule wSampleRule, int wActive);

    ServiceResult<BRMSampleRule> BRM_QuerySampleRule(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<List<BRMSampleRule>> BRM_QuerySampleRuleList(
            BMSEmployee wLoginUser, String wName, int wActive, Pagination wPagination);

    //抽样属性
    ServiceResult<Integer> BRM_UpdateSampleProp(BMSEmployee wLoginUser, BRMSampleProp wSampleProp);


    ServiceResult<Integer> BRM_ActiveSampleProp(BMSEmployee wLoginUser, BRMSampleProp wSampleProp, int wActive);


    ServiceResult<List<BRMSampleProp>> BRM_QuerySamplePropList(
            BMSEmployee wLoginUser, int wRuleID, String wName, String wCode, int wASNTypeID, int wActive,
            Pagination wPagination);

    ServiceResult<BRMSampleProp> BRM_QuerySampleProp(
            BMSEmployee wLoginUser, String wMaterialNo, int wASNTypeID, double wMaterialNum);

    ServiceResult<Integer> BRM_UpdateSampleRange(BMSEmployee wLoginUser, BRMSampleRange wSampleRange);

    ServiceResult<Integer> BRM_DeleteSampleRange(BMSEmployee wLoginUser, BRMSampleRange wSampleRange);


    ServiceResult<List<BRMSampleRange>> BRM_QuerySampleRangeList(
            BMSEmployee wLoginUser, int wMaterialGroupID, String wMaterialGroupFullName, int wMaterialID,
            String wMaterialCode, String wMaterialLike, Pagination wPagination);


    //序列号规则
    ServiceResult<Integer> BRM_UpdateSerialNoRule(BMSEmployee wLoginUser, BRMSerialNoRule wSerialNoRule);

    ServiceResult<Integer> BRM_DeleteSerialNoRule(BMSEmployee wLoginUser, BRMSerialNoRule wSerialNoRule);

    ServiceResult<Integer> BRM_ActiveSerialNoRule(BMSEmployee wLoginUser, BRMSerialNoRule wSerialNoRule, int wActive);

    ServiceResult<BRMSerialNoRule> BRM_QuerySerialNoRule(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<List<BRMSerialNoRule>> BRM_QuerySerialNoRuleList(
            BMSEmployee wLoginUser, String wName, int wActive, Pagination wPagination);

    //序列号范围


    ServiceResult<Integer> BRM_UpdateSerialNoRange(BMSEmployee wLoginUser, BRMSerialNoRange wSerialNoRange);

    ServiceResult<Integer> BRM_DeleteSerialNoRange(BMSEmployee wLoginUser, BRMSerialNoRange wSerialNoRange);


    ServiceResult<List<BRMSerialNoRange>> BRM_QuerySerialNoRangeList(
            BMSEmployee wLoginUser,  List<Integer> wCustomerIDList, int wMaterialGroupID,
            String wMaterialGroupFullName, int wMaterialID, String wMaterialCode, String wMaterialLike,
            Pagination wPagination);

    //预分配模板
    ServiceResult<Integer> BRM_UpdateDistributionRule(BMSEmployee wLoginUser, BRMDistributionRule wDistributionRule);

    ServiceResult<Integer> BRM_DeleteDistributionRule(BMSEmployee wLoginUser, BRMDistributionRule wDistributionRule);

    ServiceResult<Integer> BRM_ActiveDistributionRule(
            BMSEmployee wLoginUser, BRMDistributionRule wDistributionRule, int wActive);

    ServiceResult<BRMDistributionRule> BRM_QueryDistributionRule(BMSEmployee wLoginUser, int wID, String wCode);


    ServiceResult<List<BRMDistributionRule>> BRM_QueryDistributionRuleList(
            BMSEmployee wLoginUser, int wMethod, int wFirstType, String wName, int wActive, Pagination wPagination);

    //预分配属性
    ServiceResult<Integer> BRM_UpdateDistributionProp(BMSEmployee wLoginUser, BRMDistributionProp wDistributionProp);

    ServiceResult<Integer> BRM_ActiveDistributionProp(
            BMSEmployee wLoginUser, BRMDistributionProp wDistributionProp, int wActive);



    ServiceResult<List<BRMDistributionProp>> BRM_QueryDistributionPropList(
            BMSEmployee wLoginUser, int wRuleID, String wRuleCode, String wName, String wCode, int wActive,
            Pagination wPagination);

    ServiceResult<BRMDistributionProp> BRM_QueryDistributionProp(
            BMSEmployee wLoginUser, int wRuleID, String wRuleCode, String wCode);

    ServiceResult<Integer> BRM_UpdateDistributionRange(BMSEmployee wLoginUser, BRMDistributionRange wDistributionRange);

    ServiceResult<Integer> BRM_DeleteDistributionRange(BMSEmployee wLoginUser, BRMDistributionRange wDistributionRange);

    ServiceResult<List<BRMDistributionRange>> BRM_QueryDistributionRangeList(
            BMSEmployee wLoginUser, int wMaterialGroupID, String wMaterialGroupFullName, int wMaterialID,
            String wMaterialCode, String wMaterialLike, Pagination wPagination);
}
